<?php

/**
 * moyen actions.
 *
 * @package    mercure
 * @subpackage moyen
 * @author     Mikael Hervouet
 * @version    SVN: $Id: actions.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $
 */
class moyenActions extends sfActions
{
  /**
   * Correspond à la vue simple
   * @param sfWebRequest $request 
   */
  public function executeIndex(sfWebRequest $request)
  {
    $this->moyens = Doctrine_Core::getTable('Moyen')->getListeMoyens();
        
    $this->etats = Doctrine_Core::getTable('ListeEtat')->getActiveEtat();
  }
  
  /**
   * Vue détaillée de l'application
   * @param sfWebRequest $request 
   */
  public function executeVuedetaillee (sfWebRequest $request) {
    $this->moyens = Doctrine_Core::getTable('Moyen')->getListeMoyens();
    
    $this->etats = Doctrine_Core::getTable('ListeEtat')->getActiveEtat();
    
    $this->lsordredepart = $this->getOrdreIntervention();
  }

  public function executeShow(sfWebRequest $request)
  {
    $this->moyen = Doctrine_Core::getTable('Moyen')->find(array($request->getParameter('idmoyen')));
    $this->forward404Unless($this->moyen);
  }

  public function executeNew(sfWebRequest $request)
  {
    $this->form = new MoyenForm();
  }

  public function executeCreate(sfWebRequest $request)
  {
    $this->forward404Unless($request->isMethod(sfRequest::POST));

    $this->form = new MoyenForm();

    $this->processForm($request, $this->form);

    $this->setTemplate('new');
  }

  public function executeEdit(sfWebRequest $request)
  {
    $this->forward404Unless($moyen = Doctrine_Core::getTable('Moyen')->find(array($request->getParameter('idmoyen'))), sprintf('Object moyen does not exist (%s).', $request->getParameter('idmoyen')));
    $this->form = new MoyenForm($moyen);
  }

  public function executeUpdate(sfWebRequest $request)
  {
    $this->forward404Unless($request->isMethod(sfRequest::POST) || $request->isMethod(sfRequest::PUT));
    $this->forward404Unless($moyen = Doctrine_Core::getTable('Moyen')->find(array($request->getParameter('idmoyen'))), sprintf('Object moyen does not exist (%s).', $request->getParameter('idmoyen')));
    $this->form = new MoyenForm($moyen);

    $this->processForm($request, $this->form);

    $this->setTemplate('edit');
  }

  public function executeDelete(sfWebRequest $request)
  {
    $request->checkCSRFProtection();

    $this->forward404Unless($moyen = Doctrine_Core::getTable('Moyen')->find(array($request->getParameter('idmoyen'))), sprintf('Object moyen does not exist (%s).', $request->getParameter('idmoyen')));
    $moyen->delete();

    $this->redirect('moyen/index');
  }
  
  /**
   * Change l'état du moyen et son commentaire
   * inscrit le changement dans la main courante
   * @param sfWebRequest $request 
   */
  public function executeChangerEtatMoyen (sfWebRequest $request) {
    if($request->isXmlHttpRequest()){
      $idmoyen = $request->getParameter('idmoyen');
      $idlsetat = $request->getParameter('idlsetat');
      $commentaire = $request->getParameter('commentaire');
      
      $etat = new Etat ();
      $etat->changerEtatMoyen($idmoyen, $idlsetat, $commentaire);
    }
    return true;
  }
  
  /**
   * Action suivante
   * Change l'état du moyen
   */
  public function executeActionsuivante (sfWebRequest $request) {
    if ($request->isXmlHttpRequest()){
      $idmoyen = $request->getParameter('idmoyen');
      $idetat = Doctrine_Core::getTable('Moyen')->find($idmoyen)->getIdetat(); // on recupère l'id de l'état du moyen
      $etat = Doctrine_Core::getTable('Etat')->find($idetat); // on instancie l'objet état
      $etat->actionSuivante($idmoyen); // on fait appel à là méthode actionSuivante
    }
    return true;
  }
  
  /**
   * Est appelé par le script jQuery pour mettre à jour un moyen (rafraichit la ligne)
   * @param sfWebRequest $request
   * @return type 
   */
  public function executeUpdatemoyen (sfWebRequest $request) {
    if ($request->isXmlHttpRequest())
    {
      $idmoyen = $request->getParameter('idmoyen');
      $vue = $request->getParameter('vue');
      
      $unmoyen = Doctrine_Core::getTable('Moyen')->find($idmoyen);
      $etats = Doctrine_Core::getTable('ListeEtat')->getActiveEtat();
      
      $params = array('moyen' => $unmoyen, 'etats' => $etats, 'vue' => $vue);
      
      if($vue == 'detaillee'){
        $params['lsordredepart'] = $this->getOrdreIntervention();
      }
      
      return $this->renderPartial('moyen/unmoyen', $params);
    }
  }
  
  /**
   * Affichage de la fenetre détail pour un moyen
   * @param sfWebRequest $request 
   */
  public function executeDetailmoyen (sfWebRequest $request) {
      $idmoyen = $request->getParameter('idmoyen');
      $this->moyendet = Doctrine_Core::getTable('Moyen')->getUnMoyen($idmoyen); // on récupére le moyen
      $this->lsordredepart = $this->getOrdreIntervention();
      $this->etats = Doctrine_Core::getTable('ListeEtat')->getActiveEtat();
      
      $this->partial = 'detail'; // partial à afficher
      $this->params = array('moyendet' => $this->moyendet, 'lsordredepart' => $this->lsordredepart, 'etats' => $this->etats); // paramètre pour l'affichage du partial
  }
  
  
  //////////////////////////////////////////////////////////////////////////////
  //////////////////////////////////////////////////////////////////////////////

  protected function processForm(sfWebRequest $request, sfForm $form)
  {
    $form->bind($request->getParameter($form->getName()), $request->getFiles($form->getName()));
    if ($form->isValid())
    {
      $moyen = $form->save();
      $this->redirect('moyen/index');
    }
  }
  
  protected function getOrdreIntervention () {
    // on recupère la liste et l'ordre pour la gestion des interventions
    $lsordredepart = ListeEtatTable::getListeOrdre();
    /* l'état initial est le premier enregistrement retourné
     * on met l'état initial à la fin afin qu'il apparaisse dans la dernière colonne
     */
//    $etatinitial = $lsordredepart->get(0);
    $lsordredepart->remove(0);
//    $lsordredepart->add($etatinitial);
    return $lsordredepart;
  }
}
